local config = EventHorizon.config

function EventHorizon:InitializeClass()
	self.config.gcdSpellID = 1082

	-- TODO Remove for 3.1 release.
	local isPTR = tonumber((select(2,GetBuildInfo()))) > 9551
	local TALENT_BERSERK = isPTR and {2,30} or {2,29}

	-- Savage Roar
	self:NewSpell({
		spellID = 52610,
		playerbuff = true,
		stance = 3,
	})
	-- Barkskin (show in bear only)
	self:NewSpell({
		spellID = 22812,
		playerbuff = true,
		cooldown = true,
		stance = 1,
	})
	-- Mangle - Cat
	self:NewSpell({
		spellID = 33876,
		debuff = {33876, 33878, 46855}, -- Mangle - Cat, Mangle - Bear, Trauma
		unique = true,
		stance = 3,
		requiredTalent = {2,26},
	})
	-- Mangle - Bear
	self:NewSpell({
		spellID = 33878,
		debuff = {33878, 33876, 46855}, -- Mangle - Bear, Mangle - Cat, Trauma
		cooldown = true,
		unique = true,
		stance = 1,
		requiredTalent = {2,26},
	})
	-- Rake
	self:NewSpell({
		spellID = 1822,
		debuff = true,
		dot = 3,
		stance = 3,
	})
	
	-- Lacerate
	self:NewSpell({
		spellID = 33745,
		debuff = true,
		stance = 1,
	})
	-- NOTE: Lacerate does not behave like most dots, and requires a workaround in order to 
	-- accurately show tick intervals. Commented out is the code required if you absolutely want lacerate 
	-- ticks. Icon will show as Swipe.
	--[[
	self:NewSpell({
		spellID = 50256,
		debuff = 33745,
		refreshable = true,
		dot = 3
		stance = 1,
	})
	--]]
	
	-- Rip
	self:NewSpell({
		spellID = 1079,
		debuff = true,
		dot = 2,
		stance = 3,
	})
	-- Enrage
	self:NewSpell({
		spellID = 5229,
		playerbuff = true,
		cooldown = true,
		stance = 1,
	})
	-- Tiger's Fury, if specced into King of the Jungle
	self:NewSpell({
		spellID = 5217,
		playerbuff = true,
		cooldown = true,
		stance = 3,
		requiredTalent = {2,25},
	})
	-- Berserk 
	-- Note that this is likely the only CD > 1min that EH will ever show, 
	-- and only because it's a necessary part of feral's complicated rotations.
	self:NewSpell({
		spellID = 50334,
		playerbuff = true,
		cooldown = true,
		requiredTalent = TALENT_BERSERK,
	})
	-- Faerie Fire, if specced for Imp FF. Not tracking Feral FF.
	self:NewSpell({
		spellID = 770,
		debuff = true,
		unique = true,
		requiredTalent = {1,20},
	})

	-- Spawn Balance rotation bars, but only if you're in a spec to use them. 
	-- There are other addons for Eclipse, we won't try to track both involved 
	-- buffs from it along with internal cooldown information.

	-- Moonfire
	self:NewSpell({
		spellID = 8921,
		debuff = true,
		dot = 3,
		refreshable = true,	-- Glyphed refreshes, needs a little testing for tick accuracy
		requiredTalent = {1,13},
	})
	-- Insect Swarm
	self:NewSpell({
		spellID = 24974,
		debuff = true,
		dot = 2,
		requiredTalent = {1,13},
	})
	-- Wrath
	self:NewSpell({
		spellID = 5176,
		cast = true,
		requiredTalent = {1,13},
	})
	-- Starfire
	self:NewSpell({
		spellID = 2912,
		cast = true,
		requiredTalent = {1,13},
	})
	-- Typhoon
	self:NewSpell({
		spellID = 53223,
		cooldown = true,
		requiredTalent = {1,24},
	})
	-- Omen of Clarity (all specs)
	self:NewSpell({
		spellID = 16870,	-- Thank you, Wowhead, for making my life so much easier.
		playerbuff = true,
		refreshable = true,
		requiredTalent = {3,8},
	})
	return true
end
